package src;


import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.swing.KeyStroke;


/**
 *
 * @author JMix
 */
public class EstructuraMenu {
    //Crea un hashmap donde el elemento es un ObjetoMenu y la clave es una lista de ObjetoMenu(JMenuItem).
    private static HashMap<ObjetoMenu, List<ObjetoMenu>> estructura;
    private static List<ObjetoMenu> menus;//Lista de ObjetoMenu(JMenuItems).
   
    static
    {
        ObjetoMenu separador = new ObjetoMenu();
        separador.setSeparador(true);
        EstructuraMenu.estructura = new HashMap<>();
        
        ObjetoMenu archivo = new ObjetoMenu(CommandNames.CAPTION_MENU_ARCHIVO,KeyEvent.VK_A);
        List<ObjetoMenu> itemsArchivo = new ArrayList();
        itemsArchivo.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_PROYECTO_NUEVO, KeyEvent.VK_N, KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)));
        itemsArchivo.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_ABRIR_PROYECTO, KeyEvent.VK_A, KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK)));
        itemsArchivo.add(separador);
        itemsArchivo.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_GUARDAR, KeyEvent.VK_G, KeyStroke.getKeyStroke(KeyEvent.VK_G, ActionEvent.CTRL_MASK)));
        itemsArchivo.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_GUARDAR_COMO));
        itemsArchivo.add(separador);
        itemsArchivo.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_IMPRIMIR, KeyEvent.VK_P,KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK)));
        itemsArchivo.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_EXPORTAR, KeyEvent.VK_E,KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.CTRL_MASK)));
        itemsArchivo.add(separador);
        itemsArchivo.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_SALIR, KeyEvent.VK_E,KeyStroke.getKeyStroke(KeyEvent.VK_F4, ActionEvent.ALT_MASK)));
        EstructuraMenu.estructura.put(archivo, itemsArchivo);
        
        ObjetoMenu editar = new ObjetoMenu(CommandNames.CAPTION_MENU_EDITAR, KeyEvent.VK_E);
        List<ObjetoMenu> itemsEditar = new ArrayList();
        itemsEditar.add(new ObjetoMenu(CommandNames.COMMAND_CAMBIAR_NOMBRE, KeyEvent.VK_M, KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK)));
        itemsArchivo.add(separador);     
        itemsEditar.add(new ObjetoMenu(CommandNames.COMMAND_NUEVO_RAMO, KeyEvent.VK_R,KeyStroke.getKeyStroke(KeyEvent.VK_R, ActionEvent.CTRL_MASK)));
        itemsEditar.add(new ObjetoMenu(CommandNames.COMMAND_ELIMINAR_RAMO, KeyEvent.VK_DELETE));
        EstructuraMenu.estructura.put(editar, itemsEditar);
        
        ObjetoMenu ayuda = new ObjetoMenu(CommandNames.CAPTION_ITEM_AYUDA);
        List<ObjetoMenu> itemsAyuda = new ArrayList();
        itemsAyuda.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_AYUDA));
        itemsAyuda.add(new ObjetoMenu(CommandNames.CAPTION_ITEM_ACERCA_DE));
        EstructuraMenu.estructura.put(ayuda, itemsAyuda);
        
        EstructuraMenu.menus = new ArrayList();
        EstructuraMenu.menus.add(archivo);
        EstructuraMenu.menus.add(editar);
        EstructuraMenu.menus.add(ayuda);
        
    }

    public static HashMap<ObjetoMenu, List<ObjetoMenu>> getEstructura() {
        return estructura;
    }

    public static void setEstructura(HashMap<ObjetoMenu, List<ObjetoMenu>> estructura) {
        EstructuraMenu.estructura = estructura;
    }

    public static List<ObjetoMenu> getMenus() {
        return menus;
    }

    public static void setMenus(List<ObjetoMenu> menus) {
        EstructuraMenu.menus = menus;
    }
    public static List<ObjetoMenu> getItemsMenu(ObjetoMenu menu){
        
        return EstructuraMenu.estructura.get(menu);
        
    }
}
